# -*-coding:utf-8-*-
import sys
from PyQt5 import uic
from PyQt5.QtWidgets import QApplication
from PyQt5.QtWidgets import QMainWindow


class Calc(QMainWindow):
    def __init__(self):
        QMainWindow.__init__(self)
        self.x = None
        self.y = None
        self.result = None
        self.operator = None
        self.equal = None
        # self.clear = None

        uic.loadUi('calc.ui', self)
        btns = [
            self.pushButton0,
            self.pushButton1,
            self.pushButton2,
            self.pushButton3,
            self.pushButton4,
            self.pushButton5,
            self.pushButton6,
            self.pushButton7,
            self.pushButton8,
            self.pushButton9,
            self.pushButton_add,
            self.pushButton_sub,
            self.pushButton_mul,
            self.pushButton_div,
            self.pushButton_equal,
            self.pushButton_dot,
            self.pushButton_clear
        ]

        map(lambda btn: btn.clicked.connect(self.click_on_button), btns)

    def calculate(self):
        '''
        如果x，y operator不为空，计算结果。
        '''
        if self.x and self.y and self.operator:
            self.result = str(eval("%s%s%s" % (self.x, self.operator, self.y)))
            self.text_result.setText(self.result)

    def click_on_button(self):
        # print self.sender().text()
        # print 
        value = self.sender().text()
        # 点击的是数字
        if value in ".0123456789":
            # print "你点击的是数字", value
            try:
                if self.operator is None:
                    if self.x is None:
                        self.x = value
                    else:
                        self.x += value
                    self.text_result.setText(self.x)
                else:
                    if self.y is None:
                        self.y = value
                    else:
                        self.y +=value
                    self.text_result.setText(self.y) 
            except Exception, e:
                print e
            
            # 点击的是运算符
        elif value in "+-*/":
            # print "你点击的是字符", value
            self.operator = value
            self.text_result.setText(" ")

        elif value in "=":
            # 点击=
            # print "你点击的是", value
            self.calculate()
            self.text_result.setText(self.result)
        else:
            # print "你点击的是C"
            self.clear()

    def clear(self):
        self.x = None
        self.y = None
        self.result = None
        self.operator = None
        self.text_result.setText(" ")
        pass


if __name__ == '__main__':
    app = QApplication(sys.argv)
    calc = Calc()
    calc.show()
    # calc.x = "25"
    # calc.y = "2"
    # calc.operator = "*"
    # calc.calculate()
    app.exec_()
# 练习上传